package com.peng.spring.life;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

/**
 * Spring 生命周期：
 * 1. 实例化 Bean
 * 2. 设置 Bean 的属性
 * 3. 调用 Bean 的初始化方法
 * 4. Bean 可以使用了
 * 5. 调用 Bean 的销毁方法（单例的 Bean 不会被销毁，原型模式的 Bean 会）
 *
 * @Author peng
 * @Date 2024-04-17 10:23
 */
@Component
public class Life {
    private String mean;

    public Life() {
        System.out.println("1.调用无参构造进行实例化");
    }

    @Value("Hello, World!")
    public void setMean(String mean) {
        System.out.println("2.调用 setMean 设置属性");
        this.mean = mean;
    }
    @PostConstruct
    public void init() {
        System.out.println("3.调用生命周期初始化 init 方法");
    }
    @PreDestroy
    public void destory() {
        System.out.println("5.关闭容器前，调用生命周期销毁方法 destory");
    }
}
